<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script>
      /**
       * 解析器在调用函数每次都会向函数内部传递一个隐含的参数,
       * 这个参数就是this，this指向的是一个对象，
       * 这个对象我们称为函数执行的上下对象，
       * 根据函数的调用方式的不同，this会指向不同的对象
       *   1.以函数的形式调用，this永远都是window
       *   2.以方法的形式调用时，this就是调用方法的对象
       *
       *  本质：this对象 指向：永远指向 "." 前面的对象，也就是谁调用它，this就指向谁
       */
      var c = 11;

      function fun(a, b) {
        // var a;
        // var b;
        var c = 1;
        // console.log("a=" + a + ",b=" + b);
        // console.log(this === window);
        console.log(this);
      }
      // fun()// fun() === window.fun();
      // window.fun();

      // 创建一个对象
      var obj = {
        name: "孙悟空",
        sayName: fun,
      };
      var obj2 = {
        name: "沙和尚",
        sayName: fun,
      };
      var name = "全局的name属性";
      obj.sayName();
      obj2.sayName();
      // obj.sayName();
      // 以函数形式调用，this是window
      // fun();
    </script>
  </head>
  <body></body>
</html>
